(function(jQuery) {
	jQuery.fn.inputUrl = function(pProtocoloPadrao) {
		
		var aProtocolos = [ 'http://', 'https://', 'ftp://' ];
		var fProtocoloPadrao = 'http://';
		
		if ( pProtocoloPadrao != undefined ) {
			if ( $.inArray( pProtocoloPadrao, aProtocolos ) > -1 ) {
				fProtocoloPadrao = aProtocolos;
			}
		}
		
		$(this).bind('keydown', function(e) {			
			var aOpcoes = [ 8, 46 ];
			var r = $.inArray(e.keyCode, aOpcoes);
			var $this = $(this);
			var _val = $this.val().trim();
			/*
			if( r > -1 ) {
				if ( $.inArray( _val.toLowerCase(), aProtocolos) > -1 ) {
					return false;
				} else {
					return true;
				}
			}*/
			return true;
		});
		
		$(this).bind('keyup', function() {
			var $this = $(this);
			var _val = $this.val().trim();
			
			var lenMaior = 0;
			for ( i = 0; i < aProtocolos.length; i++ ) {
				if ( aProtocolos[i].length > lenMaior ) {
					lenMaior = aProtocolos[i].length;
				}
			}
			var lenMenor = lenMaior;
			for ( i = 0; i < aProtocolos.length; i++ ) {
				if ( aProtocolos[i].length < lenMenor ) {
					lenMenor = aProtocolos[i].length;
				}
			}
			
			if ( _val.length > lenMenor ) {
				
				if ( _val == '' ) {
					$this.val( fProtocoloPadrao );
				} else {				
					if ( _val.length < lenMenor ) {
						$this.val( fProtocoloPadrao + _val );
					} else {
						
						_valAnterior = _val;
						
						_qtdIteracoes = 0;
						_ultimoProtocolo = '';
						var _achouProtocolo = false;
						
						while ( _qtdIteracoes < aProtocolos.length ) {
							for ( i = 0; i < aProtocolos.length; i++ ) {
								var p = aProtocolos[i];
								var l = aProtocolos[i].length;
								var pa = _val.substr( 0, l );
								if ( _val.substr( 0, l ) == p ) {
									_ultimoProtocolo = pa;
									_val = _val.replace(new RegExp(pa), '');
								}
							}
							_qtdIteracoes++;
						}
						
						_val = ( ( ( _ultimoProtocolo == '' ) ? fProtocoloPadrao : _ultimoProtocolo ) + _val );
						if ( _valAnterior != _val ) {
							$this.val( _val );
						}
						
					}
					
				}
				
			}
			
		});
		
		$(this).bind('blur', function() {
			$(this).trigger('keyup');
		});
		
		$(this).bind('focus', function() {
			$(this).trigger('keyup');
		});
		
		$(this).trigger('keyup');
		
		if ( $(this).val().trim() == '' ) {
			$(this).val( fProtocoloPadrao );
		}
				
	}
})(jQuery);